{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "DATA_PATH = './data/'\n",
    "# hyperparameters\n",
    "batch_size = 64"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from torch.utils.data import DataLoader\n",
    "from utils import get_datasets\n",
    "\n",
    "train_dataset, test_dataset = get_datasets(DATA_PATH)\n",
    "train_dataloader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)\n",
    "test_dataloader = DataLoader(test_dataset, batch_size=batch_size, shuffle=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train_size: 100, test_size: 20\n",
      "img shape: torch.Size([3, 110, 110]), label: tensor([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.,\n",
      "         0., 0., 0., 0., 0., 0., 0., 0.],\n",
      "        [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
      "         0., 0., 0., 0., 0., 0., 0., 0.],\n",
      "        [0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
      "         0., 0., 0., 0., 0., 0., 0., 0.],\n",
      "        [0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
      "         0., 0., 0., 0., 0., 0., 0., 0.],\n",
      "        [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
      "         0., 0., 0., 0., 0., 0., 0., 0.]])\n"
     ]
    }
   ],
   "source": [
    "# 数据集和测试集的数量\n",
    "train_size = len(train_dataset)\n",
    "test_size = len(test_dataset)\n",
    "print(f'train_size: {train_size}, test_size: {test_size}')\n",
    "\n",
    "# 数据格式\n",
    "img, label = train_dataset[0]\n",
    "print(f'img shape: {img.shape}, label: {label}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl0AAAC+CAYAAAAPzbouAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABsOklEQVR4nO2dd4BdRfX4PzP3vrI9bdN7IyQBQodACr1LkC4gQVGaYvcnli9FRcHyRUEEVEBBkK6IQCQIht57SyEJISG9bbL7yr1zfn/MvW93SdAAyUP8ng/sZt99c+vMPXPmnDNnjIgIiqIoiqIoyhbFftQXoCiKoiiK8n8BVboURVEURVGqgCpdiqIoiqIoVUCVLkVRFEVRlCqgSpeiKIqiKEoVUKVLURRFURSlCqjSpSiKoiiKUgVU6VIURVEURakCqnQpiqIoiqJUgS2mdD311FOMHz+euro6jDE8//zzW+pUFa699lqMMcybN2+Ln0v5+DB16lTq6+s/6stQ/g1Tp05l8ODBH/VlKP8HefDBBzHGcOutt37Ul6K8iy3dr5933nkYY1i+fPkWOf67CbfEQcvlMkcffTT5fJ7//d//pba2lkGDBm2JUymKoij/xVx44YWMHj2aKVOmfNSXoigfmi2idM2ZM4f58+fzm9/8hlNPPXVLnEJRlP8yfvOb3+Cc+6gvQ/kP48ILL+Soo45Spev/KCeddBLHHXccuVzuo76UzcIWUbqWLl0KQJcuXbbE4RVF+S8kk8lstmMVCgWy2SzWatiqonycCYKAIAg+6svYbGx2iTR16lQmTZoEwNFHH40xhsmTJ1fiahYuXMiUKVOor6+nubmZr3/968RxXNl/8uTJGGM2+nPttddWyr3yyivsvffe1NTU0L9/f37wgx/oKPk/gNQ/Pnv2bKZOnUqXLl1oamrilFNOobW1FYBrrrkGYwxXX311p30vvPBCjDHcfffdwKa1hff6fmMxAG+++SYHHHAAdXV19O3blwsuuAAR2eLPRIF58+b9y7qCzjFdIsLgwYM5/PDDNzhWoVCgqamJ0047DWiPx/nTn/7Ed7/7Xfr160dtbS1r164lCAJ++ctfVvZdvnw51lq6d+/eqe7POOMMevfuvQWfgLIxHnzwQXbaaSfy+TzDhg3jyiuvrMgQ8O/3+vXr+f3vf19pK1OnTq3s//DDD7Pzzju/5/4p9913H3vuuSddunShvr6erbbaim9/+9v/8tqKxSKHHnooTU1NPProo5v93pVNo2NM16GHHsrQoUM3Wm733Xdnp512AtrlTUedIcUYw3nnnfcvzzl//nyGDx/O2LFjWbJkyYe9hU5sdkvXaaedRr9+/bjwwgs5++yz2XnnnenVqxd//OMfieOYAw44gF133ZWf/vSnTJ8+nZ/97GcMGzaMM844A4DvfOc7G7gkr7/+eqZNm0bPnj0BWLx4MXvttRdRFPGtb32Luro6rrrqKmpqajb37SgfkGOOOYYhQ4bwox/9iGeffZbf/va39OzZk4suuohTTjmF22+/na9+9avst99+DBgwgJdeeonzzz+fz372sxx88MHAprWF6667boNzf/e732Xp0qWdgufjOObAAw9kt9124+KLL+bee+/l3HPPJYoiLrjggi34JBSA5ubmDeqqXC7zla98hWw2u0F5YwwnnngiF198MStXrqRbt26V7/7617+ydu1aTjzxxE77fP/73yebzfL1r3+dYrFINptl7NixzJgxg7PPPhvwnbQxhpUrV/Lqq68yZswYAB566CEmTJiwuW9b+Rc899xzHHjggfTp04fzzz+fOI654IILaG5urpS57rrrOPXUU9lll134/Oc/D8CwYcMAeOmll9h///1pbm7mvPPOI4oizj33XHr16tXpPK+88gqHHnoo2267LRdccAG5XI7Zs2fzyCOPvOe1tbW1cfjhh/P0008zffp0dt555y3wBJT3y7HHHsunP/1pnnrqqU51Mn/+fB5//HF+8pOffOhzzJkzh7333ptu3bpx33330aNHjw99zE7IFuCBBx4QQG655ZbKtpNPPlkAueCCCzqV3X777WXHHXd8z2M98sgjkslk5DOf+Uxl25e//GUB5IknnqhsW7p0qTQ1NQkgc+fO3Xw3o7wvzj33XAE61ZeIyBFHHCHdu3evfH7nnXekW7dust9++0mxWJTtt99eBg4cKGvWrHnPY2+sLbybiy++WAD5wx/+UNmWtr0vfvGLlW3OOTnkkEMkm83KsmXLPsitKh+SM888U4IgkH/84x8i4utp0KBBle/feOMNAeTXv/51p/0+8YlPyODBg8U5JyLt8mbo0KHS2traqexZZ50lvXr1qnz+6le/KhMnTpSePXtWjrtixQoxxsgvfvGLLXGbyntw2GGHSW1trSxcuLCybdasWRKGoXTsmurq6uTkk0/eYP8pU6ZIPp+X+fPnV7a9+uqrEgRBp/3/93//V4B/+Z537LNaWlpk0qRJ0qNHD3nuuec+3E0qH5prrrmm0q+vWbNGcrmcfO1rX+tU5uKLLxZjTKUtzJ07VwC55pprNjgeIOeee27lc9pnLVu2TF577TXp27ev7LzzzrJy5cotcj9VD3g4/fTTO32eMGECb7755kbLLl68mKOOOopx48Zx+eWXV7bffffd7Lbbbuyyyy6Vbc3NzZxwwglb5qKV983G6nnFihWsXbsWgN69e/OrX/2K++67jwkTJvD8889z9dVX09jYuNHjvVdb6MgDDzzAOeecwxe/+EVOOumkDb7/whe+UPnbGMMXvvAFSqUS06dP/6C3qXxA/vCHP3D55Zdz8cUXs9dee220zMiRI9l111354x//WNm2cuVK7rnnHk444YQNXEgnn3zyBtbuCRMmsGTJEt544w3AW7QmTpzIhAkTeOihhwBv/RIRtXRVkTiOmT59OlOmTKFv376V7cOHD+eggw7apP2nTZvGlClTGDhwYGX71ltvzQEHHNCpbBpb/Je//OXfhqCsWbOG/fffn9dff50HH3yQcePGbfpNKVucxsZGDjroIG6++eZO4QE33XQTu+22W6e28H55+eWXmTRpEoMHD2b69Ol07dp1c1zyBlRV6crn851MxwBdu3Zl1apVG5SNoohjjjmGOI65/fbbO81cmD9/PiNGjNhgn6222mrzX7TygXh3408bcMe6Pu644zjkkEN48skn+dznPsc+++yz0WP9q7aQ8vbbb3Pssceyxx578POf/3yD7621G8QCjBw5EkDzulWZ559/ntNPP53jjz+er371q/+y7Kc//WkeeeQR5s+fD8Att9xCuVzeqFI9ZMiQDbalitRDDz3E+vXree6555gwYQITJ06sKF0PPfQQjY2NbLfddh/21pRNZOnSpbS1tTF8+PANvtvYtnezbNky2traNqkfSOXCqaeeSq9evTjuuOO4+eabN6qAffnLX+app55i+vTpFdez8p/Fsccey4IFC3jssccA7w585plnOPbYYz/UcQ877DAaGhqYNm3aew7+NwdVVbrezwyEb3zjGzz22GPcfPPN9O/ffwtelbIleK+67jg6WbFiBU8//TQAr7766nuOQv9dWyiVShx11FHkcjluvvlmwnCLTMpVNgOrVq3iyCOPZOTIkfz2t7/9t+WPO+44MplMxdp1/fXXs9NOO210gLWxmM6+ffsyZMgQZsyYwWOPPYaIsPvuuzNhwgQWLFjA/Pnzeeihhxg/frzOdPwvpaamhhkzZjB9+nROOukkXnzxRY499lj222+/TpO4AA4//HBEhB//+Mc6Mes/lMMOO4za2lpuvvlmAG6++WastRx99NGVMu+2gqe8u747cuSRRzJnzpxOlvUtwX+klPnTn/7EJZdcwk9/+tPKTMiODBo0iFmzZm2wPXUhKB8PzjrrLFpaWvjRj37Eww8/zCWXXLJBmX/XFgDOPvtsnn/+eW677bYNgmhTnHMbuLFnzpwJoFnQq4RzjhNOOIHVq1dzxx13UFtb+2/36datG4cccgh//OMfmT9/Po888shGrVz/itSV+NBDDzFu3DgaGhrYbrvtaGpq4t577+XZZ59l4sSJH/S2lA9Az549yefzzJ49e4Pv3r1tYx1oc3MzNTU1m9wPWGvZZ599+PnPf86rr77KD3/4Q/7xj3/wwAMPdCo3ZcoUrr76am644QbOOuus93tbShWoq6vj0EMP5ZZbbsE5x0033cSECRM6ualTz8rq1as77ZtazDfGT37yEz772c9y5plncsMNN2yRa4f/QKXr5Zdf5tRTT+XEE0/kS1/60kbLHHzwwTz++OM8+eSTlW3Lli3b4hqqsvm49dZbuemmm/jxj3/Mt771LY477ji++93vVhQh2LS2cM0113DllVfyq1/9qlOM38a47LLLKn+LCJdddhmZTOY93ZrK5uX8889n2rRp3HjjjRt1Bb4XJ510Eq+++irf+MY3CIKA44477n2dd8KECcybN68inMF3wuPHj+fnP/855XJZ47mqTBAE7Lvvvvz5z39m0aJFle2zZ8/mnnvu6VS2rq5ug84zCAIOOOAA/vznP/PWW29Vtr/22mtMmzatU9mVK1ducP40VqtYLG7w3ac//Wl++ctfcsUVV/D//t//e7+3plSBY489lkWLFvHb3/6WF154YQPXYmNjIz169GDGjBmdtr9XPDB45f6qq67iqKOO4uSTT+bOO+/cItf+H+eHOeWUUwCYOHEi119/fafvxo8fz9ChQ/nmN7/Jddddx4EHHsiXvvSlSsqIQYMG8eKLL34Ul628D5YuXcoZZ5zBXnvtVQluv+yyy3jggQeYOnUqDz/8MNbaf9sWGhsbOfPMMxk9ejS5XG6DMkcccQR1dXWAjye89957Ofnkk9l111255557+Nvf/sa3v/3tDeIMlc3PSy+9xPe//30mTpzI0qVLN6ird6d/6MghhxxC9+7dueWWWzjooIMq6UI2lVSheuONN7jwwgsr2ydOnMg999xDLpfTlAAfAeeddx5///vf2WOPPTjjjDOI45jLLruMsWPHdlqrd8cdd2T69On8/Oc/r7iLd911V84//3zuvfdeJkyYwJlnnkkURVx66aWMGTOmUz9wwQUXMGPGDA455BAGDRrE0qVLufzyy+nfvz977rnnRq/tC1/4AmvXruU73/kOTU1N/zanl1JdDj74YBoaGvj6179OEAQceeSRG5Q59dRT+fGPf8ypp57KTjvtxIwZMzoN6jeGtZbrr7+eKVOmcMwxx3D33Xez9957b96L3xJTIt8rZURdXd0GZdPpmimDBg0SYKM/Had/vvjiizJp0iTJ5/PSr18/+f73vy+/+93vNGXER0zH6bcd6Tjt95Of/KQ0NDTIvHnzOpX5y1/+IoBcdNFFIvLv20I6Lfi9ftJ2kLa9OXPmyP777y+1tbXSq1cvOffccyWO46o8l//rpDLhvX5ENkwZ0ZEzzzxTALnhhhve89gd5c276dmzpwCyZMmSyraHH35YAJkwYcKHuznlA3P//ffL9ttvL9lsVoYNGya//e1v5Wtf+5rk8/lKmddff10mTpwoNTU1AnRKH/HPf/5TdtxxR8lmszJ06FC54oorNuhT7r//fjn88MOlb9++ks1mpW/fvnL88cfLzJkzK2Xeqw1985vfFEAuu+yyLfcQlH9Jx76jIyeccIIAsu+++250v9bWVvnsZz8rTU1N0tDQIMccc4wsXbr0X6aM6LjvpEmTpL6+Xh5//PHNej9GRFNyK4ryn81XvvIVfve737F48eJNigVTPr5MmTKFV155ZaPxWpvCeeedx/nnn6+rTfyX8Lvf/Y5TTz2VBQsW/FdMqvuPi+lSFEXpSKFQ4Prrr+fII49Uheu/jLa2tk6fZ82axd13383kyZM/mgtS/uN45513MMZ0WpXi48x/XEyXoigK+Ni/6dOnc+utt7JixYr3nEyhfHwZOnQoU6dOZejQocyfP59f//rXZLNZvvnNb37Ul6Z8xCxZsoRbb72VK664gt133/2/ZsClSpeiKP+RvPrqq5xwwgn07NmTX/7yl5od/L+QAw88kBtvvJHFixeTy+XYfffdufDCCzea9FT5v8Vrr73GN77xDXbZZRd+85vffNSXs9nQmC5FURRFUZQqoDFdiqIoiqIoVUCVLkVRFEVRlCqgSpeiKIqiKEoVUKVLURRFURSlCqjSpSiKoiiKUgVU6VIURVEURakCqnQpiqIoiqJUAVW6FEVRFEVRqoAqXYqiKIqiKFVAlS5FURRFUZQqoEqXoiiKoihKFVClS1EURVEUpQqo0qUoiqIoilIFVOlSFEVRFEWpAqp0KYqiKIqiVAFVuhRFURRFUaqAKl2KoiiKoihVQJUuRVEURVGUKqBKl6IoiqIoShUIN7VgLA4wGAwgABgAMWDAGcGK89squpwAgmCTff0njIAYnDiMMe2an9jkoFTOIYAYgxGpfCWVkyd/SHt5fz0CxCAWIwaxEOMIjE2uQtksJI/c1yfQoYakUsjXukEQI8lnQ8e/OpZOt3bcr307IKb9VB3aBO+q17SM1nb1SOvRSwraf1deTcHgMCIIgS9rfB0bSerc4N/hSnvpIGdS2ZF8Nphke4drMIIzYJOrEOn8xvtj+XJxcr1Bcm5nDNZI5RSd2rNJJZjyfhBpl+OYtJ4TOlSpAGKdl9mAwXXuNzb26JN6Mh3Eh28z6Y+tnKDSb6XtrHIAk/zVLp9M2rbSMgZUkmw+Yvw7ZsALCwDboZ/AEAMBSd2KqVSbEam0hfZ3OTmMEawzFbkhWBxCgN+O8UdHBKwhNmDFef1DLNKhw0h1lYqMSPWMSlsCzAdrE5ts6SpQoCxCJEJBHBERxA7KEANFQCghFHwDdoCLk23iC8X425AiUhKiuEAclZE4Sn4ESZ6JCOD8DZeBCP8CCw5wyb/tb5tDiF3srycqE7u1EEdIEVwktNGK69S5Kx+aVNkVaf+c/uCSmkqJ8K0kqtQglRJlHAUcRWJiYpKqFwGJQOLk741dg3Q673sVU7Y8TiJiYgoIJYFYKq8wMVAWiKWM0AqxwzkoiqNEARG3gfodE1GmSCxxUqkxjhIxEYjzzcIlPzFI2YukAjEiJZxEROnJI9/mxAFRjLgyrRRppQTlGFeCYiJfBPeutiz+AMr7xuHAJVUgZRwxRL5Di3A4IigBcUyZdZTTwlJMKjY5UId+odI/CBAJEjlcLJRjoVyOgAJIEYnKOIlwlBFiHJGvX0fS3pJzOd8vRZSI0npO5QkqTzY3ZRf7GoljXCzEEcRlgdghcRkiWAtELvZ1td6XK4pQTupaBFzskNgLmjIxBRzihMgVKZdLxGWh1QlxuYCLYuIYpChQFmIHrUSUaIW44NuQCLEIEgvOCS6CFgqskzJxEYgEXAGc+3e3+C/ZZEtXViCMEutRKO2KfzI6CAAxWRBwGIz1W72eaQgS9a7jaDHEN/6SQJAJSOxTAGQAm2iXIb7hx8ZUbG2m030LJlWdjWCsEBlDHIIJvGZZQ6i+1M1OKpIc7fp7Wr8WW6lNwBiMZBCCZPzZbvGCAPtuixYkQ5hMh7Zm2oc3yYhITLtVrDNql6g2VgwOQ2AMIRDEyTA08P9kHTibJSZDgMU6Q9YEOGqS2uo8LAokwBhDkFjFkJBUZDmDP25l+OUIxRII5CXAJFZu3yoNWC+nnIGAACMBGZyXIy7GBGWMESIxBJhk4J1axg0aifHBiLCE1hCKgGQgNhgDkrQVAGtJrAbtUgBnK9aPdFDX/kZ3sELZmBJl1tmIMo5aAkIXYpxFjCE2gfd2dLgmY6mcy1pTsbtbwk5SY6PWNeVDkysIZCOKgSMOIOtCAmcgFiQIMNb3/9jA6+N1giWm1cSEGUd9OSDCUggMORzZyJCTgDIQBxDEYAmgBKH17/a6rCWKoT7rB/ABOXJAmOgocWAoW8g4/31JLLk2R11dmchEBCaLiBAbgUS+fdDmsclKV1B2UGgDDDYXYnJ5wIF1WCxWIMam3kbKSUPOJK3dGeeVKCyGwLsA4phYLHEYIsRghHJyMzYRmEYEa1LBarzsjFOzI2AECfxJIgMZImyhQCaMKGeh1XjTYB1ZKhenbB5MqlS9y95bUYJiMGUgRCRbKdded6bdG9xRwiWVbMT67amngOT4HfUyUnOyt5p5vTvo4JJC67xKiPHdV1acdxkm7r2KQV68e6lsDASOwMUEksEaS2ycdz12UN6NWII05MDrZNg4qcxAiKyXDwGOGEncBRYbGyTtTAWclcS1CZGxXoUTyMbWj4zDiKWFxSABXbLdcSYkEEPQqVlbbUcfAAMUiKjBYJ31bt3AYTsOvoK0bOA9GgZMHCCWZHQdk7aHjpUgCG22wKtrX+efcx5iybKlbNd9W47Y9nBqJAcZhxFHQICYZFBgfMdpE7dzZBwW3zcFErQfO/VZap1vdiQQTFwg4xwZHLgicZDDZRv9QMdAzksPnHFgS+Ray4SUIHCYUoYglyU0htAJOIsEObwmAtgAB0Q5IYiKWNogiqgv1mFtK6U8hCZDRkgMAZaSMcRE5MrrMCVHJtcIgZAprCdjDcQ1mEAoG4MjcX1+wPvf9JiuQoHHf30lcRyx2+mnk8vlMUYQmwhKV3l3MCambGICMgSRwQWO2DqMhEkHaxGEZ/52Nz0HDqP39tsRxjGWiMBaYmMTN3o6QnHe4pxsC6zxJmbjR7wueUFCJ5hCC0/ecQdD9tiJ7sMavB4rBlO2mOwHfErKRvHOoIANnOykcRohSTQdsRjEGYJACIy3mLbrWaayq/e5OzBlxISAhVTWJh1nIo2TTalTKvFf4+1nXkDbZAStkrMarDKOjDgaHGCEUmAgMJQx5LFgCxipAWNYS4HQrqNOGkBytJgiOSw1YhBvL8PEXgGTQCiZIs46wiReyxlDLJARiy2HWGOJMkJkIkIJKBmDMxEZyrQmylwtAZDxbcL6NhFLxHKzml/O+A3jR+3IxGF7kxULyT5epqnV9INiY2F9sBoxAUHYSEwb6ynTTeoJXUhsDZGFQHw8V9HEZKwj63zQgSMiMM4r08bboySxdDscy6NVXPP473l84SPsv/N+9GnujTUBuCR+xzhiIiLKZEyWMiWKtJGjBoulYIpASF7yZMVinEGseAGmsmOLEBHT8vTzzPnHE3Tp2kDQx9KSzzFm/+OxBJQDbxU3Bqx1mLZ1vH7ljfQYNYz5r75Krx5d6L3XBGa/8AqrZ81m1F7j6TJuJyJqqBHBivcERqEjWr6YZ/58C1sP3I4Fj86mtl/AgOMPgC713msWe/VJHGRckZl/u4vFT7/CdkcdT5dRQ3jjtjtYNP9ttjtyKl0H9yeDpYj5wPFc8D6ULinHrHvxWUpxAVc8JYmF96FmRjIQgSkn/s4gJsxDUCpg2gxSG0IuIBl2ggExEWteeYG6CLLbbA2lIiaKCGuyBGEGEwSVEa4DbNyGRAWMzeEkxNmA2AZExr+cIYb6SCgvXcSqRx5mzA7bYlsL1BqHyeQgspBRS9fmZH0JVixfSc/u3TDGkskK1sQgAYKF2BKbDFEQ8PxLy7hn2qMMHprn+CP38U5n8S9VqlVJEj/jJCaS2FsajO+EvcA13l9csYA5cBEYgxNBjAXxyr9zZWwQYILMR/mI/k/xh4duZ/zW27Bj1z60uYi/v/w0zU09GTF4DLmyUAxLZOIMxAFPLHqGBWte4xOjJ5OjgTuem8HWXYez0+CxSCiEYnwH6KBsY9bSwuutr/PKG88ga9cT5pvYZuyujKoZSFPcBCYkCss4WnEu4P4XniTTZBgzbBDPzn2FtYtaOXTHvanPN4LJEll8DEemyJ+fn8YTLa+y5sXlFBbFHDD+AIy1OBcT2E0WkcpGcHGJh+ffR1A0RNKbWe+8RL+xg/hEj/E0xg0YG1IO/Xu8fO1KHpj9FHuN24WetpElpRYeffYxdhy1Hb279ibjHcPExIgI64pr+dOTt/DU4mcoBm2sXbWK7sO7E9iMN4gbWCfreOrtJ3ls5iMMbBpC0bayqPA2uw/fk1JLmZcXvMTQXluz94i96SZdE5kjfpgvAZWpV9pvbDZKr8/lyV9dwYitdsauj1lww82YHXYgnHg8BJANwEQkY2ahtHQJyx7+Jy0LZ9E0fDTv3P5nlsx6A9d3APVrVvDMtVey30VbE+byCAUQQxjnMEGZ1pmzWf+3GSzfXmjoMZAlf/8zNd1q6H7MCVjTrmDUBL5/6WqzvPmPh1jTpTtNA49g2Z33YCVDw2fqIbReLvHh5lZsskSxVhgyoA8RbQTW+Q7S+tFGIIJEwoqZL/DKnX+h2/AxbHPUwbx483WUZy1k2KdPpm7EsM6zmGxEl1ILtW1rkTWrmfvMsyxctIId9tuX2j59Kk6qZA/syhW8et0faClEDN5hV+YuX812e+9DXXMPIgNRYClkHOXVy+mxej2lF2cz664ZDB4zioYDJlCuaSBnNDJjc7KyrcTXvvMLfnbRN+nWtSFRnRzprDJxYDIBRWd49Lnl3PTXmRz7qe1YT0jGQM5IElkRVawPTixlMpRNWAnTCq2AiwkthKmLEvzMKAPOWQhC4g7WT5O4Cjo7JJQtSdms4cGZM9hq1wNZ0LaWe5/7B6cfPJUYBxIQE5CxkBVD/x69+ctzNyGsJ1+u4aW5b7HvqIkYY4ilDCb01W+hZEq8seY1fjDjZ7igyMRe2/P4nKf488Kn+M4+X2TXhkavQBlLhhAylmyj5c/P3sb8cDSPP/YEU8efSm2uHiuSBE0HiImJXAGpyRJnsmw/bBz9s/3IkiUk6GDfkkQeaUt6vxTjEo8sfoj4rTaGDzyQqLbMHx75IxMO2JqmsA4beVeziKMmX8NTs56iT78GuvUdx6zFs3hq1jPsucMemCQ2GAxWAsquiAksy7IrWB2sZkTTQLZp3pYemWbfmSadaBtl/rpoOtPnT2Nsl+2o617LI4v+ycNvvsieoyfwwDsPUjvzCQZ2G8guzTslFjKHMzFWAt7VESmbgbeeeJquI3ox9KxjwWYo2JmsKZS9VTLnEsU3Nc4ILStX0FIbs+Pnjqa2+1Bef+ghug0cRM9jjmLt04+x5IZrsAUhZw2FbIQLQgJjEMq0vPEGg/r2Yujpn8TWdSG2C1g5fyE9Eld2GDiss143cZbmbcfR3LM7bc89yrpXh2DeXsjwQ6cQ9mhGnDcUBImD54OyyTqIiyPWPnw/q/45DVcqtG/HK2AGQ9vSObT87U8seexJKBvWP/h3yndcR3nJwmRaZjodW4hNkbrSOmrXrmLOXXfy1J23039IX/LdGygTUU4CZP1FCm7BAtb96QZW/+U2lj31GI0NtYTZjJ/9GUHoDDYW2ubNobB6CauWvUWu1MZr11zDyjdfo2zcu+ZGKR+Wx1+czaKVIZf/7j4uv+ovrFnXmjzjpOaMUJb1RMbx3KsLKYUDMA1DuP7PT3Lb316hrSggQRIg72ePFGOYt2gNV18/jRfeWM1v//AgN972KCtbImIyOBKLKQ6sIDbgneUt/Op307jo0r/x0yumccOdT7JwbSsFk7oXlWqwz+hRvLLwBV4vvs2D85+mT99ujOzWnToM2ICsq0WMl1bDavtz9OSjuP31+7jjzWl8cq+D6ZXvhjU+0DqW9kkYkSnz9NwnmbliDrERVreuRDKG+ave5vlZLyDW+QB5CQjjPEKGkUMHYxuEGx+/lb1334ttBowmdHnAx3CUExdVTjL0a+zLyLoRHD72IHYYOY6czRA4Q0jQPj/DxBvcr/LvaXUwd+1CJu+0K8ftfghH7rwPRhzFWIhtkFiyY4LAks/XMGjMIB6d/RgtrOf+mQ8wcuxIGnK1hFiyEmCLgi058oTUZ3I0dKulaIts1zyOT4ycQrPp4cP/bJJ+wMWsWLecOBsxfsc92Hro1pQoMqBXf/YfdyD5xjzLw2WUTAFnne/oiZO51+jUxS1A7FqgEeKGHOW6OnJNDUhUJs5Y1tkSEUVcxscrOaD49jIyPbqRHzKIkrOUwgx1Y7eBmkZK6ws0dO8BNudDnCRDhKVkHLZcJJr3Ft3HjaTcu5EoNCxbtYS6vr0xsSUyUDIxErpkzlaI6duTXnvvSOmtF2m76x5yxDTssxvFwGJthsi69jCXD8gmW7qMBNTEEcZFPoZLAElymySTe8JiG83F9bgohsjR1Lae+kIbmVIS99Uh9sdJmUw54p177mJFc08O/PIXaRyzDZLJEpt0FomkgVysf3suebeWHiNHM/rEIwj6DqBgLW2hQ0xIJoZsi6NlzlvU7zaKgadPIVxjeOLbs2l7awk9horGdG1mGhobcdKFnn160K0RgsBiJHEXGsCUwJRY2ZJj4bIijgyzZ69izswXaVsNWw/qwS7b9PKKFzaZVQSz5q7h7r+/zvwFln59GvnrPS9SV1/HJw7YvhKELyZCJCYiy7xla1jcEtDc3J0XXlvO9X+dxptLlvPN0w7xAwLVu6rC8KZe9OrZg/tmPcaLb81m6rjDqY1DYmv9LLEoIA4cjpisC+kaNOFqsxStoVtDI6ExxHHs462SSRYEQkyZ1sJ6GlyWPkFXhjb0p1fjYOzIrmzbfQQ2ct6CFRuvUJkSK9esYHVpDWF9nuH9hpN1GZ+zy/iwBT9ZxxEQsmTu24zuMYw68mTJYNNZdJXGoz3vB2UpaymVLOP6b0fXOGR5W4nmbCNhJkschBgH1hhEfOa2bQeN5voHnuSZJS/xdst8Dh13IFkJ/KDaJWYnY33cnxMWr10CYUD//EC6SlcyLkTCNMuXEMSONYuW0GgzbNdtKx6f/wj1hYAxTcOoKwdQLpJtCsnUZnEd882kOSlETV2bm35DB/LMDfdSeuwVrK2j7f5nqBk6FBs56jIWTETZCBk/OZXinEWMGDIKWw4or2pjaU2eUf364IIcK5a20NB/GOQyRBZClyE0gnGCW7OeVW/OpT5fpm7uQlY/Np/181bQ67jdfC42MX4CjvUDqgKOMJ+l11670nL7b1ky7QF6bDuOutEjKNgAEaGEwVpvCPqglu9N97YVLLlyTCbOQZz1KmgsWAIiK4gTiOuI4lrERuBaCCRDUKwjjLKYNN4/dYaKw4RNUBJy2Ziahhxx6IVtVowPpHMQxz63TmHRO2TXF6kdsi1Bj2FEmQaCbJa8iajBh/o41rPy5dn03nUPJGwibhMKmYDart3flWJC2RyMHdqTHrmBHHbYDhz1yW1oqvHOPxOHGFPGmAgxGRYuaWP1yiIDei7n9GNH0rdhMG0uS9nEQBtI7Of6UgQbMffN5Qwa1o+vfmkip5y4G2O2G86S1esxRJg4gsgQYxC3jlJhHWHP7vQf2Ru3fj3WhqwyvVi2wpErq7isJln6M3HIHjz83AzqrGPr3lthMg1kJIuxDsIIgpjWsMAiWcadj9zDrt13YGzjSG556haWsRwTBAQuR+AyEELZlrAGduizAwPLvZAiDBs2jt2Hj2dEpi/Dm4cTBzkvUiy0ZgrMXP0av/7HVfQdOJDethevzp5FISOUs362tTFQC2CEliBi5arFZGyZ+YWVOOMnYBhrIeggrz6MP+H/MPPWPMMwuxU1wSCisMy8NWvoa3pSH4Q4I0gWP83CZMgQsW2XAdTUdeWGF+6iOVvL1l2HkzM1PrYuNJCFchhRsGVWx0WWrlxPVhro1q0HWFfp0fw/jqVrl7AsWEPYq4a6TDdaFhcIgiw9u/dlbet61pTX0hQ00TXfg7AcQmSwLiTEJAl2lc1N0y7jGb7d3sy85Ce8feW55LvkKXarg2xEWMoQulpyLsBGYEqWF4slgrHjMC7Dumg1K5ubyDbUYuP1LC47sv23w0iIZPCKQAEcEaW2Ncwx67BdanjinP/hradnMPq008j2HQoW8mLJkyEmoIBP9GfjMpleAwh6DGShtdTtezCB6UGtgAsNIVk+7CBsky1d6+tj1tVCVA4oZQ2lDNQ7CGM/G6hUUyBodpRrS9Qvf5u2px+jtGYRS+vbsDVryVEmDHJQ9lPLY3K0Rln6fOII3l7/Dg9f+nt2P/V0aoYOJs4b1hOQMZa8c7CuwOo5b7Esl2f44OFgsmCyGEqVzC6CI1q3gmJbC+tmLaTLoKUsvOef5Jrq6DZmEHFWxebmxhJB7DNyOYIkr1EOkcT0CThC3lm+hNXrlzNqVC0NjXnWrl9Pplaob6zDdMoALrgYFi1YzB67jKKh1lIuOFrXCc2ju1Np7EkaCTE53l5c5JyLplFc6zhkt6EseqeAc030HzAUE6RmYFW9qkFkhCG9BtOUa2T3obvSFHbxedaSkALEYJL28vyLL2FbQo6ffDRF18pt99zEq6+/xp6jexAm+ZLSbOZZcmw7YByH7XU097/+GFf99Xa6ZbqxVa+RbDMsS2CFrIUaB60trdz59/vYesB2HDh2EnOa3+KhGU+xz8ACXWrrwfqcfj5xjcUSss2wMdz1yF0snbmI/znmu5hkZmN6foxGc31Q2lasYmTtUOqkAessxTUFBuR7UUuGIBaMNWSMYOIQXJ76sJGJIydx8/RbOXbvw6mhxg/kTDrbNPYKMUKxVKZxVY4x8WC2bhxE1pmKcyRJMsGqletpKHVjYENfumSbiVYE9IoH07dpKK6UpaG1O0N7DqNL0IhxxmfzTVIU6folWwYJAsLtR7PVXmMoLF/AC3/8MyMHjcbE4LLe8GKTmHFCw0Gnf54wBDKGnkMHc8SXvwz1tRCE7HHMMdiwBglDInzONxNYbBQTz1xJv/ohDJzyKQYe+Wni2kakrjtIzgdmicWKITQ+aMXGELdGtMx8mxXLWgkGDqF+5x2RbEjB+vaQc3jr54dQJjZZ6crFBerKhkKbtzy1AjkbkHXeLx84Q4+hI9lqwr4sfP4dlj/8MqahNy1dy/TK+pxePiW/d1U6m6W1SzOFPgMZO/GTPPebG3ny939i5zM+Q2Zgb1wm4/N+2RiJ25hbLLC63wC23XpryHpTcIgF47PTBmJoWb4a16OZuK3IjP/5CYP6DmDcWScgNXk6rRWhbBasWHJ5x8IF66jL1VCbN1iT1AkBmDoigbmz12NdhsEDh1EoFlm7Zj3duneloa4OLx6T1ABAobXE2tVr6N9nB6wxuLjM6hWL6Nd722T2It5gagyOPK++8TZvz1/PdmP7Mmm/kTz4wp3kjGPk0G6Je1N9ytVibXkNz7z2FLVRDbsM2pUaan1HZnzaUxtbrA3IApPGTmT3MbsRZkOMEb5y2NfISIi1Fhc5AuuTWoY+TSJNQReO3upQDh42mSAOyJoMuTBPVrJkItIlDOhW25UvHX4accYhoaFn34HsfsR46oI6P7vVxBXdPSAgT5YJW41nu6FjCAkJjA7NNid7j9qLYFQjtaYOYsf4ETszfuQO1IZ1mCgNYDaYWBCXIUM9kwZMYseTdqJnJk+Gzu+vMZYkZT1da5s49/BvYUyRPkE3bBRCIDjjk+AKITsP25HfDbgEk3H0lK6cc+jZtIXr6JJpxjnDr4+9FBsENNEIseBCQUycTI622m1sAUQcS+5/hgXPv4KEZfrusQfN++5Nay5LGAk29PUXBoC1ZOtrAcFZiMMMJqwhDr3nLOziY7niwCfLjgAbgHEhCxetpsuwHbCN/Yjqs6y3eQwhGfG5tkIfSoyJxE++iAJef/BxnvjjH+jfux8jDp9CTd9+lMKwsiwRfHhVYtNjut54i3LZEHTvTY4MGRwZZ3xGUmMohnmk1wh6fudcehZqcXV5+pRW4AoRhS69KJKjToQ042BWMmx36mcIgixB93p2OPtMorYWcvX1mCBLLQGROAoGgu51TP6fbyOFNnJd+uMCn0AttaWAl6NNW41k9+//D2EuYPDaIpl8LYXGDKtMDU0dkh0qm4eavGHS5MH84pdXkA1W8IsLz6Vn925JJ+tT1WWBJW/Oprm2yPajBlBqXUtNuIJeTQHdGtLmZ/yoRgyF1laI1jCwTzdCAly5BOXl9Gmu93GBRpKJLQYkYOTI/uwwqj9L31rCXTe9RLDOMrjJMKxPiJEIn9tYK74aPPrMwzz63KPsu+e+9Mz1IuuymNggobccmMDPbA1NQEMQEksumQ9hMLaO2EYYDDbwef8Q421RkiG0IRky1AX12MD62UkusYCI+NxKgW9GXTONxEYoxkLWGMLQz2gtS0SmQ044A2QkJLR11ObyxBIlCZyVzUVj0INAcpjIx2I1ZZuIKIFkfGb6ILF0J++0NSFdbR0NQQ21BMmCJ4nlMfltwKePMELvbC8yEvgUA5hkHT6pxA/ngjx98v2TnEyWpnxXGumCGEscQN9wMFYcWZfx2WhCSRYiqyQHrPoz+2+nUJ9lzDdOxRQjcI5sbT3ksuAs1iZzhU0aUmkQGxA5hxMDNkNl4UbxllJrSVauSOLwAmGdLTNoyj6Y2EBtjowLqCPJcWwgTZwMBhNYXDnCCozaYw+G7bAdQVAkU9OAydaRldAneTcgVuiYr/mDYKRiQ//XTNv3CLqGyxl+7Al0nfJpaMgggaGcTK0OnBDZZHFJLEUggyMsCc4ERBkhFKkE1DsrmGRZoWLGBz6GOC8UXZJywEBsoYSQISIjMWKySf5gk7gWO7icIr9WV5wVSsTkxHqrmhiCGExGc0ZsTsqyjrZiDS2FVqw4ejQ0EFqTLCZcIkzCWVe2xJQioaE+izWONevKmCCge0Peq0TpoukUieOAtWtL1DbVEgaCc7CmpZX6hrokxQQYsUhisShjWdFWxJUjGjN52kolSgg9GvLkDN4VoZH0VeGd0kKKUURtvpF6U0dNlKkoXVEQYysLv3j3c/uEHN8GJHA+nYzYyjZoF8LOtC8T1i602hcCSrNEx1gyYiu5fqLAO5z8UmU2WV4syQOWpB3xP0liiLSTT5ef0fbzgYlFsIkCnSYdjXEIhhBLCUdA4rUQH3pioF2hxr++Sf+YrL8rpAsPe5dg8l1iAxDjPR+Bg0pLcfj1YfCdioR+4eXAmaQP99fnTERkYgwBGee1dfNh0o8rG+CKBe+yT3MuBr5fdvgVTkOEdNnzdAmodGEShw9+D3hXVnhJyloByrThkuXGAjJAWEzKZQDrlxtLlwoTI0mLdBiXrGxiU4mSpC5KlqCTylXYDywXNlnpap0zG9OwHunSh4zpRmgisAGSZpm3Dmf8NN1UHTI4/yDEL4AYYwhif/El6whFiExAhEkmcid+9DTrQIcrk0BSo5pX8tI4kYQIhxNLNjIUMj5/WBZDWDYYB5KVpKL17dlciKwjpo5kPisZJHklhMg4wnTav+TxPsESXtT5NRgNEYYwGX44/73LJss6JDNj025aOss9kzR+IcKZEsbVYcpJbpcQjIl8561pI6pGK+uTIVfGT+9PlusSnycXMWXSde7AJGsjJhYFLwWTZaE61FdaPHFDtadwSOOtAJKp/sYvBwTWd+I+YRux8aENxpjK8jMVKZ6coxIvr8aNzUpZ/EohzvoONYsX7SXj5UWJmIwIIYaS8ctG5RKF2LXnx/a6uUlbj3Ry8cSYyoolxviM5CGJ3BepZLDBRv5ozvrO2fi/Dd6C4fW+ODlH0CkeVEXI5sO5MrExhLGF2PglVZM4ylaEPL49dOr/oVIJZSAUME6QJK1E4PADvMCBjREcIpYkYVslrtR2aDjGeY3DWSglcXyhuMQQYIkNlJO2ZfFt1zrxk/JCPnCj2GT3Ys2gAbQGbcTUE7gAZ8u+LRuwlIkpJ/mCLRAlA8fUWlUm8E/WvzjGjzyd8Q08J0FlEELgBa8kQdB+6S3/ApnAEIjXSDtJRxHCpLM3EpIvALkSuADKGSQjHeJ79O3ZXJg4TxAkWj/44akIWIuR0Aejiq9DAbDZyvKXXp/qaHb0krHS+VUkpUk89QYI/Eg4Hf0kanogDjHrIFsDEmCMXxLImRBj1GFULWpcbcUiYQATxImPIFlsXjJ0lKSG1AuUWC6SadztWZQrXqJkPeSNjA/bGwxxIs5C5xX2yDoCDIHz4QhexTeV/Sp5+wydJoBre9mc+MGRTxRiIE6yvAeCxXlbRGLtdKk4cIATXNAxubFf1kcSZd0ryskW4zAmUeKlfUAuxiv85WRh9IAAIcYFZQIyWAxi8elGks7GJksBpZYzSazr2io2JwGlxA1oAmEdhixCTWSoNd6ymMqRzvKic6ZNI97yXTbtkx78JL2QQHxgvEFwoaPNAuKXI7Ok1tJkrC/p/pKu3liRB+mnTu2wXYR8IDZZ6SrZDHkXQtELMJf3pwwEMH6tNJssahwlXjw/xwQfc4E39ybLqZExQhuOjMQEsV9ZXGzycibmPvAHMdavAB+QmoIdYgzOBL5TTx+TKeMyIX7kW6YcCFKTwRpBKJMhq6/O5sQFGBtXPLapMuRnMRriRC+2ieYlyajBIATGvuslareAkJh6/fqM3ujsrafJckHJucRYhAyBa/SJUg2ATUYpBmfKPkO5UhVMlCguAZVFy7HiFyBPXIYVUZV0aOlyYslqi4noS/4zlW42sXSk62yaigBMF+UwGMJ09loSH5SRGIxf/NomaWjSJuYkNXZJYpung5BVNhcBAhKR+DkSzcoQBL6zC42BZBFzmz78NF+WSHvPZtrrvTLcFjBEWOOwEkKSzNYkqQKdcRixfgVYA4EzYCyxiX1bceBCv3C6JO5nOipdgV8OKF2BU9k8mMj40CxiAueot2CdBRcQZXztBp0ULkklQPp/Moj3/UmEIZu4/xyGgvFexFyQNiHjDVNYrAOxhhjn215iBctAYvn0cqGUHCOTDAAACIwP5icp/0Hvf1Pdi05Sy1NiqTIdrU0d/040wXe5g1K83PUPMcZhxWClPeV/WubdF2XEVEQyiaBMnf2VCknGM2L8PAaXdNTpONh2WtpD+dAk06s713RSN0k7SFcgSMtVfkvavXZoQ4YOrqW0jr2S7bekXWPSWQOpIK7059K+tx8M6MTvqtFunKS990tMBv+iDqSDZctg2j+/SwpsIBM6/E7MVZ1KtzeHziU7jqI7jqPV0rX5EUnlcqI0pW3BdKgZSZVqv09q0EwTb3d4rUnrOR1ot//YTt/7GdSdSeN3wCtjyakr1tb0WtIY0zR2rF25VzYH4pIBVyLH0woWDC5RhNrns1f26vRXGm7iAGe8ddMkPUWiM1dWwQEqfVFlUNfh8wbXlx5D0jLtx5CkX/swy8ttstKlKIqiKIqifHDUmq4oiqIoilIFVOlSFEVRFEWpAqp0KYqiKIqiVAFVuhRFURRFUaqAKl2KoiiKoihVQJUuRVEURVGUKqBKl6IoiqIoShVQpUtRFEVRFKUKqNKlKIqiKIpSBVTpUhRFURRFqQKqdCmKoiiKolQBVboURVEURVGqgCpdiqIoiqIoVUCVLkVRFEVRlCqgSpeiKIqiKEoVUKVLURRFURSlCqjSpSiKoiiKUgVU6VIURVEURakCqnQpiqIoiqJUAVW6FEVRFEVRqoAqXYqiKIqiKFVAlS5FURRFUZQqoEqXoiiKoihKFVClS1EURVEUpQqo0qUoiqIoilIFVOlSFEVRFEWpAqp0KYqiKIqiVAFVuhRFURRFUaqAKl2KoiiKoihVQJUuRVEURVGUKqBKl6IoiqIoShVQpUtRFEVRFKUKqNKlKIqiKIpSBVTpUhRFURRFqQKqdCmKoiiKolQBVboURVEURVGqwBZRus477zyMMSxfvnxLHP7fnldRlI8/H5UcUT6+PPjggxhjuPXWWz/qS1E+QiZPnszkyZM/6svYKGrpUhRFURRFqQKqdCmKoiiKolQBVboURVEURVHeg9bW1s12rC2qdK1evZqpU6fSpUsXmpqaOOWUUzpdvDGGL3zhC/z5z39m7Nix5HI5xowZw7333lsp09bWxqhRoxg1ahRtbW2V7StXrqRPnz6MHz+eOI635G0o/4I07mbmzJmceOKJNDU10dzczPe+9z1EhAULFnD44YfT2NhI7969+dnPftZp/6VLl/LZz36WXr16kc/n2W677fj973+/wXlWrFjBSSedRGNjI126dOHkk0/mhRdewBjDtddeWym3ePFiTjnlFPr3708ul6NPnz4cfvjhzJs3r9PxLr/8csaMGUMul6Nv376cddZZrF69egs8IWVzMn/+fIYPH87YsWM544wzqK+v36hAPP744+ndu7fKho8Jzz33HAcddBCNjY3U19ezzz778Pjjj3cq8+abb3L00UfTrVs3amtr2W233fjb3/620eM55/jhD39I//79yefz7LPPPsyePbtTmcmTJzN27FieeeYZxo8fT01NDUOGDOGKK67YYvepbDrz5s3DGPOePylXXXUVw4YNo6amhl122YWHHnpog2Nde+21GGM26AfSGMAHH3ywsq1ju5g4cSK1tbV8+9vf3mz3tUWVrmOOOYaWlhZ+9KMfccwxx3Dttddy/vnndyrz8MMPc+aZZ3Lcccdx8cUXUygUOPLII1mxYgUANTU1/P73v2f27Nl85zvfqex31llnsWbNGq699lqCINiSt6FsAsceeyzOOX784x+z66678oMf/IBLLrmE/fbbj379+nHRRRcxfPhwvv71rzNjxgzAK9STJ0/muuuu44QTTuAnP/kJTU1NTJ06lV/84heVYzvnOOyww7jxxhs5+eST+eEPf8g777zDySefvMF1HHnkkdxxxx2ccsopXH755Zx99tm0tLTw1ltvVcqcd955nHXWWfTt25ef/exnHHnkkVx55ZXsv//+lMvlLf+wlA/EnDlzmDhxIg0NDTz44IN86lOfYv369Rt0vK2trfz1r3/lqKOOUtnwMeCVV15hwoQJvPDCC3zzm9/ke9/7HnPnzmXy5Mk88cQTACxZsoTx48czbdo0zjzzTH74wx9SKBT4xCc+wR133LHBMX/84x9zxx138PWvf51zzjmHxx9/nBNOOGGDcqtWreLggw9mxx135OKLL6Z///6cccYZXH311Vv8vpV/TXNzM9ddd12nn6uvvroysAf43e9+x2mnnUbv3r25+OKL2WOPPfjEJz7BggULPtS5V6xYwUEHHcS4ceO45JJL2GuvvTbHLXlkC3DuuecKIJ/5zGc6bT/iiCOke/fulc+AZLNZmT17dmXbCy+8IIBceumlnfY955xzxForM2bMkFtuuUUAueSSSzZ6XqV6pM/885//fGVbFEXSv39/McbIj3/848r2VatWSU1NjZx88skiInLJJZcIINdff32lTKlUkt13313q6+tl7dq1IiJy2223bVDfcRzL3nvvLYBcc801leMD8pOf/OQ9r3fp0qWSzWZl//33lziOK9svu+wyAeTqq6/+UM9D2XykbWvZsmXy2muvSd++fWXnnXeWlStXioiIc0769esnRx55ZKf9br75ZgFkxowZH8VlK++TKVOmSDablTlz5lS2LVq0SBoaGmTixIkiIvLlL39ZAHnooYcqZVpaWmTIkCEyePDgyrv8wAMPCCBbb721FIvFStlf/OIXAshLL71U2TZp0iQB5Gc/+1llW7FYlHHjxknPnj2lVCptsXtWPhhnnnmmBEEg//jHP6RUKknPnj1l3Lhxner6qquuEkAmTZpU2XbNNdcIIHPnzu10vLS9PPDAA5Vtabu44oortsg9bFFL1+mnn97p84QJE1ixYgVr166tbNt3330ZNmxY5fO2225LY2Mjb775Zqd9zzvvPMaMGcPJJ5/MmWeeyaRJkzj77LO35OUr74NTTz218ncQBOy0006ICJ/97Gcr27t06cJWW21Vqdu7776b3r17c/zxx1fKZDIZzj77bNatW8c///lPAO69914ymQyf+9znKuWstZx11lmdrqGmpoZsNsuDDz7IqlWrNnqd06dPp1Qq8eUvfxlr25v/5z73ORobG9/TXaF8dLz88stMmjSJwYMHM336dLp27Qr48ISjjz6au+++m3Xr1lXK33TTTfTr148999zzo7pkZROJ45i///3vTJkyhaFDh1a29+nTh0996lM8/PDDrF27lrvvvptddtmlU53W19fz+c9/nnnz5vHqq692Ou4pp5xCNputfJ4wYQLABv1KGIacdtpplc/ZbJbTTjuNpUuX8swzz2zWe1U+HH/4wx+4/PLLufjii9lrr714+umnWbp0Kaeffnqnup46dSpNTU0f6ly5XI5TTjnlw17yRtmiStfAgQM7fU6FZccO8d1l0nLv7jSz2SxXX301c+fOpaWlhWuuuUZzcv0H8e56bGpqIp/P06NHjw22p3U7f/58RowY0Un5Adh6660r36f/9unTh9ra2k7lhg8f3ulzLpfjoosu4p577qFXr15MnDiRiy++mMWLF1fKpMfcaqutOu2bzWYZOnRo5XvlP4fDDjuMhoYGpk2bRmNjY6fvjj32WNra2rjzzjsBWLduHXfffTdHH320yoePAcuWLaO1tXWD9xG8HHDOsWDBAubPn/+eZYAN3ttN6XsA+vbtS11dXadtI0eOBNgg/kf56Hj++ec5/fTTOf744/nqV78KtNf5iBEjOpXNZDKdFPgPQr9+/TopcpuTLap0vVc8hYi8rzIp06ZNA6BQKDBr1qzNcIXK5mJj9fh+6nZz8eUvf5mZM2fyox/9iHw+z/e+9z223nprnnvuuS12TmXLcuSRRzJnzhz++Mc/bvDdbrvtxuDBg7n55psB+Otf/0pbWxvHHntstS9T+Q/io5A9ypZh1apVHHnkkYwcOZLf/va3H+gY7zUAe6+JNjU1NR/oPJvCxyZlxIsvvsgFF1zAKaecwvbbb8+pp57KmjVrPurLUj4EgwYNYtasWTjnOm1//fXXK9+n/77zzjsbzFJ792yklGHDhvG1r32Nv//977z88suUSqXKrMn0mG+88UanfUqlEnPnzq18r/zn8JOf/ITPfvaznHnmmdxwww0bfH/MMcdw7733snbtWm666SYGDx7Mbrvt9hFcqfJ+aW5upra2doP3EbwcsNYyYMAABg0a9J5lgA/83i5atIj169d32jZz5kwABg8e/IGOqWw+nHOccMIJrF69mjvuuKOTtyOt83cbYMrlMnPnzu20LbV0vnuG+kfh2fhYKF3lcpmpU6fSt29ffvGLX3DttdeyZMkSvvKVr3zUl6Z8CA4++GAWL17MTTfdVNkWRRGXXnop9fX1TJo0CYADDjiAcrnMb37zm0o55xy/+tWvOh2vtbWVQqHQaduwYcNoaGigWCwCPoYwm83yy1/+stOo93e/+x1r1qzhkEMO2ez3qXw4jDFcddVVHHXUUZx88skVV2LKscceS7FY5Pe//z333nsvxxxzzEd0pcr7JQgC9t9/f/7yl790cuctWbKEG264gT333JPGxkYOPvhgnnzySR577LFKmfXr13PVVVcxePBgRo8e/YHOH0URV155ZeVzqVTiyiuvpLm5mR133PED35eyeTj//POZNm0aN954I0OGDOn03U477URzczNXXHEFpVKpsv3aa6/dQLlK48bTmfPgrVxXXXXVlrv49yCs+hk/AD/4wQ94/vnnuf/++2loaGDbbbflf/7nf/jud7/LUUcdxcEHH/xRX6LyAfj85z/PlVdeydSpU3nmmWcYPHgwt956K4888giXXHIJDQ0NAEyZMoVddtmFr33ta8yePZtRo0Zx5513snLlSqDddDxz5kz22WcfjjnmGEaPHk0Yhtxxxx0sWbKE4447DvAj63POOYfzzz+fAw88kE984hO88cYbXH755ey8886ceOKJH83DUP4l1lquv/56pkyZwjHHHMPdd9/N3nvvDcAOO+zA8OHD+c53vkOxWFTX4seMH/zgB9x3333sueeenHnmmYRhyJVXXkmxWOTiiy8G4Fvf+hY33ngjBx10EGeffTbdunXj97//PXPnzuW2227bIC50U+nbty8XXXQR8+bNY+TIkdx00008//zzXHXVVWQymc15m8r75KWXXuL73/8+EydOZOnSpVx//fWdvj/xxBP5wQ9+wGmnncbee+/Nsccey9y5c7nmmms2iOkaM2YMu+22G+eccw4rV66kW7du/OlPfyKKomrekmdLTInsONW7I++etgnIWWedtcH+gwYNqqQVeOaZ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",
      "text/plain": [
       "<Figure size 800x200 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import torch\n",
    "from torchvision import transforms\n",
    "import matplotlib.pyplot as plt\n",
    "from PIL import Image\n",
    "to_PIL_img = transforms.ToPILImage()\n",
    "\n",
    "torch.manual_seed(41) \n",
    "fig = plt.figure(figsize=(8, 2))\n",
    "rows, cols = 2, 5\n",
    "\n",
    "for i in range(1, (rows*cols) + 1):\n",
    "    rand_ind = torch.randint(0, len(train_dataset), size=[1]).item()\n",
    "    # PIL image, label\n",
    "    img, label = train_dataset[rand_ind]\n",
    "    img = to_PIL_img(img)\n",
    "    fig.add_subplot(rows, cols, i)\n",
    "    plt.imshow(img, cmap='gray')\n",
    "    label = train_dataset.onehot_to_label(label)\n",
    "    plt.title(f\"{label}\")\n",
    "    plt.axis(False)\n",
    "    plt.tight_layout()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 800x200 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import torch\n",
    "from torchvision import transforms\n",
    "import matplotlib.pyplot as plt\n",
    "from PIL import Image\n",
    "to_PIL_img = transforms.ToPILImage()\n",
    "to_Grey_img = transforms.Grayscale(num_output_channels=1)\n",
    "\n",
    "torch.manual_seed(41) \n",
    "fig = plt.figure(figsize=(8, 2))\n",
    "rows, cols = 2, 5\n",
    "\n",
    "for i in range(1, (rows*cols) + 1):\n",
    "    rand_ind = torch.randint(0, len(train_dataset), size=[1]).item()\n",
    "    # PIL image, label\n",
    "    img, label = train_dataset[rand_ind]\n",
    "    img = to_Grey_img(img)\n",
    "    img = to_PIL_img(img)\n",
    "    fig.add_subplot(rows, cols, i)\n",
    "    plt.imshow(img, cmap='gray')\n",
    "    label = train_dataset.onehot_to_label(label)\n",
    "    plt.title(f\"{label}\")\n",
    "    plt.axis(False)\n",
    "    plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Dataloader"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mbfd\n",
      "y_label: mbfd\n",
      "y_label: fdkdh\n",
      "y_label: ijwz\n",
      "y_label: nxzzb\n",
      "y_label: qwoh\n",
      "y_label: zdur\n",
      "y_label: ocqq\n",
      "y_label: yuyo\n",
      "y_label: iypiw\n",
      "y_label: zvhl\n",
      "y_label: gtqsk\n",
      "y_label: thn\n",
      "y_label: mnkrw\n",
      "y_label: zyqn\n",
      "y_label: wgzes\n",
      "y_label: \n",
      "y_label: wxwb\n",
      "y_label: vnbq\n",
      "y_label: nvfm\n",
      "y_label: mogso\n",
      "y_label: s\n",
      "y_label: nyhh\n",
      "y_label: igen\n",
      "y_label: fkzjw\n",
      "y_label: wxyv\n",
      "y_label: lmrg\n",
      "y_label: xtwqz\n",
      "y_label: jl\n",
      "y_label: swqur\n",
      "y_label: drcu\n",
      "y_label: gkbcz\n",
      "y_label: fnpi\n",
      "y_label: jvuk\n",
      "y_label: bycr\n",
      "y_label: fzffg\n",
      "y_label: wyzxt\n",
      "y_label: fnzd\n",
      "y_label: wszr\n",
      "y_label: gmpy\n",
      "y_label: cqgjh\n",
      "y_label: wjge\n",
      "y_label: jukrb\n",
      "y_label: fx\n",
      "y_label: ulewg\n",
      "y_label: ziyrw\n",
      "y_label: \n",
      "y_label: qwnw\n",
      "y_label: ywjbn\n",
      "y_label: bgsng\n",
      "y_label: yxext\n",
      "y_label: xehw\n",
      "y_label: yiztd\n",
      "y_label: dqxie\n",
      "y_label: e\n",
      "y_label: wohem\n",
      "y_label: \n",
      "y_label: ps\n",
      "y_label: pxpb\n",
      "y_label: elnp\n",
      "y_label: vnjzh\n",
      "y_label: qptvy\n",
      "y_label: gkuw\n",
      "y_label: encdb\n",
      "y_label: iggk\n",
      "y_label: ibt\n",
      "y_label: kv\n",
      "y_label: gmsc\n",
      "y_label: ptqw\n",
      "y_label: cfsd\n",
      "y_label: rtuck\n",
      "y_label: ndqb\n",
      "y_label: kqtq\n",
      "y_label: bdgb\n",
      "y_label: upmdw\n",
      "y_label: uocf\n",
      "y_label: \n",
      "y_label: lqfdd\n",
      "y_label: ejkx\n",
      "y_label: bolm\n",
      "y_label: xekjy\n",
      "y_label: cmrbo\n",
      "y_label: edvt\n",
      "y_label: uryt\n",
      "y_label: keyp\n",
      "y_label: zbix\n",
      "y_label: kdtu\n",
      "y_label: jwdt\n",
      "y_label: mh\n",
      "y_label: sexmf\n",
      "y_label: z\n",
      "y_label: ysns\n",
      "y_label: oohp\n",
      "y_label: qyic\n",
      "y_label: ivrox\n",
      "y_label: snksw\n",
      "y_label: qfxk\n",
      "y_label: dhvp\n",
      "y_label: hnxl\n",
      "y_label: \n",
      "y_label: ukfqg\n"
     ]
    }
   ],
   "source": [
    "from utils import label_to_onehot, onehot_to_label\n",
    "\n",
    "print(onehot_to_label(label_to_onehot('mbfd')))\n",
    "\n",
    "for X, y in train_dataset:\n",
    "    y_label = onehot_to_label(y)\n",
    "    print(f'y_label: {y_label}')\n",
    "\n",
    "# for X, y in train_dataloader:\n",
    "#     # print(f'X shape: {X.shape}, y shape: {y.shape}')\n",
    "#     # print(f'y: {y}')\n",
    "#     for i in range(y.size(0)):\n",
    "#         y_label = onehot_to_label(y[i])\n",
    "#         print(f'y_label: {y_label}')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
